/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.ipartek.formacion.gestformwww.controlador;

import com.ipartek.formacion.gestformwww.modelo.ModeloCandidato;
import com.ipartek.formacion.gestformwww.modelo.ModeloConvocatoria;
import com.ipartek.formacion.gestformwww.modelo.ModeloMaterial;
import com.ipartek.formacion.gestformwww.modelo.beans.Candidato;
import com.ipartek.formacion.gestformwww.modelo.beans.Convocatoria;
import com.ipartek.formacion.gestformwww.modelo.beans.Empresa;
import com.ipartek.formacion.gestformwww.modelo.beans.Material;
import com.ipartek.formacion.gestformwww.modelo.beans.Procedencia;
import com.ipartek.formacion.gestformwww.modelo.beans.excepciones.GestorFormacionExcepcion;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 *
 * @author Curso
 */
public class VerModificarMaterialAccion implements Accion {

    private final String vermodificarmaterial = "ver-modificar-material-accion";
    private final String listarmateriales = "mostrar-material-accion";

    /**
     * Carga los datos del candidato seleccionado, si existe el usuario, el candidato y la convocatoria te muestra el usuario, si hay algun error te devuelve a la lista.
     * @param servlet
     * @param request
     * @param response
     * @return Devuelve el router que llevara el nombre de la jsp que corresponda
     */
    public AccionRouter ejecuta(HttpServlet servlet, HttpServletRequest request, HttpServletResponse response) {
        HttpSession sesion;
        AccionServlet as = (AccionServlet) servlet;
        sesion = request.getSession();
        AccionRouter router;
        String path = null;
        ModeloMaterial modelo = (ModeloMaterial) servlet.getServletContext().getAttribute("ModeloMaterial");
        Material materialMostrar = new Material();

        Integer idMaterial = -1;

        if (sesion.getAttribute("usuario") == null) {
            router = new AccionRouter("inicio", false);
        } else {
            router = new AccionRouter("principal");

            if ((Verificador.numeroValido(request.getParameter("libId")))) {
                //Si ha entrado aquí el canId  y el idConvocatoria es correcto

                if (request.getAttribute("libId") != null) {
                    idMaterial= (Integer) request.getAttribute("libId");
                } else {
                    idMaterial = Integer.parseInt(request.getParameter("libId"));
                }

                try {
                    //  visualizo el candidato con sus ids respectivas
                    materialMostrar = modelo.getMaterial(idMaterial);
                } catch (GestorFormacionExcepcion ex) {
                    sesion.setAttribute("excepciones", ex.getMessage());
                    Logger.getLogger(VerModificarMaterialAccion.class.getName()).log(Level.SEVERE, null, ex);
                }
                //  si mostrar no da errores
                if (materialMostrar != null) {
                    request.setAttribute("materialGuardar", materialMostrar);
                    request.setAttribute("contenido", "ver-modificar-material");

                }else{
                    if(request.getParameter("libId") != null){
                        try {
                            request.setAttribute("libId", request.getParameter("libId"));
                            path = vermodificarmaterial;
                            router = as.getFactory().getAction(as.getNombreClaseRecurso(path), servlet.getClass().getClassLoader()).ejecuta(servlet, request, response);
                        } catch (ClassNotFoundException ex) {
                            Logger.getLogger(VerModificarCandidatoAccion.class.getName()).log(Level.SEVERE, null, ex);
                        } catch (InstantiationException ex) {
                            Logger.getLogger(VerModificarCandidatoAccion.class.getName()).log(Level.SEVERE, null, ex);
                        } catch (IllegalAccessException ex) {
                            Logger.getLogger(VerModificarCandidatoAccion.class.getName()).log(Level.SEVERE, null, ex);
                        }
                    }
                }
            }else {
                request.setAttribute("materialGuardar", new Material());
                request.setAttribute("contenido", "ver-modificar-material");
//                try {
//                    path = "";
//                    router = as.getFactory().getAction(as.getNombreClaseRecurso(path), servlet.getClass().getClassLoader()).ejecuta(servlet, request, response);
//                } catch (ClassNotFoundException ex) {
//                    Logger.getLogger(VerModificarCandidatoAccion.class.getName()).log(Level.SEVERE, null, ex);
//                } catch (InstantiationException ex) {
//                    Logger.getLogger(VerModificarCandidatoAccion.class.getName()).log(Level.SEVERE, null, ex);
//                } catch (IllegalAccessException ex) {
//                    Logger.getLogger(VerModificarCandidatoAccion.class.getName()).log(Level.SEVERE, null, ex);
//                }
            }
        }
        return router;
    }

}
